_____________________________________________
Reconstruction tableau.xlsm    FSU 16.06.2016


Reconstruit un tableau Excel  partir de MTEXT "en vrac" xtraits d' Autocad.
L'ordre des lignes dans AutoCAD doit tre "de haut en bas"...

Cliquer simplement quelque-part sur le tableau pour lancer la macro puis slectionner le fichier .txt cre avec AutoCAD. La macro cre un nouveau classeur avec la nomenclature xtraite, trie et munie d'un filtre automatique. Le fichier contenant la macro quant  lui est ferm immdiatement aprs le traitement, ceci afin d'viter de le modifier par inadvertance.


Principe  :

Extraction sous AutoCAD (Outils / Extraction de donnes) de nomenclatures faites simplement de MTEXT (ou TEXT)* rangs en lignes et colonnes, avec le gabarit DXE inclu. Les donnes  xtraire du ou des fichiers DWG sont, dans l'ordre et exclusivement :
Texte / Position X / Position Y / Nom du DWG.
L'extraction par Autocad crit les coordonnes X et Y sous la forme 1.2500 : Il est important de fixer le nombre de dcimales  4 (Format / Contrle des units), car la conversion entre "1.2500" et "1,25" par la macro s'avre "infaisable" (mais srement pas impossible). En effet, si on peut facilement remplacer le point par une virgule en live avec la commande "Rechercher/Remplacer" cela ne fonctionne pas dans la macro. Les valeurs sont bien converties de "Texte" en "Numrique", mais la virgule disparait, les valeurs sont lues telles quelles, donc multiplies par 10000. Les calculs suivants dans la macro re-divisent ces valeurs par 10000 et tout rentre dans l'ordre, pas de problme, sauf que si l'extraction se fait avec une autre prcision dans AutoCAD les calculs de la macro seraient fausss et risqueraient de provoquer des rsultats errons.

Une tolrance sur l'alignement des textes est incluse et paramtrable (pour cela il faut diter la macro : [ALT]+[F11] dans Excel, la macro se trouve dans "Module 1" : modifier les "valeurs par dfaut" en dbut de macro.
Les valeurs par dfaut sont 5mm en X et 3mm en Y.
Suivant les cartements entre lignes et colonnes du tableau Autocad ces valeurs peuvent (ou doivent) tre corriges.
Exemple : si deux textes sont espacs de moins de 5mm en X, ils sont considrs comme appartenant  la mme colonne.


* Seul l'un ou l'autre est admis, car l'xtraction aurait alors les deux colonnes, "Valeur" provenant des entits TEXT et "Index" provenant des entits MTEXT. Si les dessins  xtraire contiennent les deux types simultanment, deux options se prsentent :

- Exploser tous les MTEXT dans AutoCAD, pour en faire des TEXT, puis adapter le DXE pour capturer ces derniers.
- Modifier la macro pour tenir compte des deux types... en adaptant l aussi le DXE.



Utilisation avec d'autres fichier DWG "ressemblants" :

Les textes d'entte de colonnes sont extraits par AutoCAD pour chaque folio trait, aussi la macro est prvue pour supprimer les doublons de la "ligne 1" de chaque DWG.
Si ce n'est pas le cas une adaptation de la macro (ou modif DWG) sera necessaire.

Le nombre de lignes et colonnes est sans importance, mais un minimum de 2 est requis... naturellement sinon ce n'est plus un tableau ;o)

Les valeurs DeltaX et DeltaY sont  adapter avec soin en fonction du dessin. Dans l'exemple fourni les lignes sont rgulirement espaces de 6,6667 mm et les carts en Y dans une mme ligne sont au maximum de 2mm et des poussires, j'ai donc fix ma tolrance  3mm; les colonnes tant plus larges une tolrance plus large (ici 5mm) est possible, les carts en X tant de l'ordre de 1,5  2mm une valeur de 3mm serait suffisante.

L'unit du dessin importe peu, la macro travaille sur les valeurs relatives, ainsi un dessin en Pouces sera tout aussi bien retranscrit.



Bugs et anomalies connues :

Si un texte se trouve "entre deux" lignes/colonnes, la macro va dans certains cas et en fonction de DeltaX/Y, manger une ligne/colonne (en ralit l'craser avec la suivante). Baisser le DeltaX/Y concern devrait rgler le problme (ou crer celui ci-dessous)...

Si un texte est hors-tolrance, il est affect  une nouvelle ligne/colonne... ce qui peut gnrer des lignes ou colonnes "fictives" n'xistant pas dans l'original. Ajuster le DeltaX ou DeltaY en consquence.

Les calculs de positionnement des textes passent par un arrondi qui peut dans certains cas tre source d'erreurs (si le dessin est par exemple "dessin dans un timbre poste" ou peut-tre mme dans un dessin en pouces contenant beaucoup de lignes) en clair si les "distances sont courtes" et comportent des dcimales significatives).
Dans ce cas, 2 lignes de la macro sont  corriger comme-ceci :
	remplacer		"Round(Range("X" & i).Value / 10000, 0)"
	par			"Range("X" & i).Value / 10000"

Cet arrondi n'a aucune utilit en fait, il ne m'a servi qu'a laborer la procdure de traitement des coordonnes en simplifiant leur lecture  l'cran durant les tests...

Par ailleurs, si l'extraction sous AutoCAD se fait avec une prcision de "0.00" c'est ces deux mmes lignes qu'il faudrait modifier en remplaant "/ 10000" par "/ 100" ...





